import {
	getDataDictionary,
	basPdaOperationLog
} from "@/api/api.js"
import { USERINFO } from '@/constant/index.js'
import {
	toRaw
} from 'vue'
import graceJS from "@/Grace6/js/grace.js";


export function getDataDictionaryFn(code) {
	return new Promise((resolve, reject) => {
		getDataDictionary({
			code: code
		}).then(res => {
			if (res.statusCode !== 300) {
				resolve(res)
			} else {
				graceJS.msg("获取数据异常");
				reject([])
			}
		})
	})
}
export function basPdaOperationLogFn(parmes) {
	return new Promise((resolve, reject) => {
		let userInfo = uni.getStorageSync(USERINFO)
		let requestInfo = {
			...parmes,
			operationUserNo:userInfo.userNameId,
			operationTime: getCurrentTime()
		}
		requestInfo.errorMessage = requestInfo.errorMessage || '无'
		basPdaOperationLog(requestInfo).then(res => {
			if (res.statusCode !== 300) {
				resolve(res)
			} else {
				graceJS.msg("获取数据异常");
				reject([])
			}
		})
	})
}
export function getCurrentTime() {
	//获取当前时间并打印
	let yy = new Date().getFullYear();
	let mm = new Date().getMonth() + 1;
	let dd = new Date().getDate();
	let hh = new Date().getHours();
	let mf = new Date().getMinutes() < 10 ? '0' + new Date().getMinutes() : new Date().getMinutes();
	let ss = new Date().getSeconds() < 10 ? '0' + new Date().getSeconds() : new Date().getSeconds();
	return  yy + '-' + mm + '-' + dd + ' ' + hh + ':' + mf + ':' + ss;
}

export function pitchOnFn(data) {
	return toRaw(data).filter(x => x.selected == 'true')
}
// 获取领料部门为品管部
export function pitchOnFn2(data) {
	return toRaw(data).filter(x => x.selected == 'qms')
}

export function sortClass(sortData) {
	const groupBy = (array, f) => {
		let groups = {};
		array.forEach((o) => {
			let group = JSON.stringify(f(o));
			groups[group] = groups[group] || [];
			groups[group].push(o);
		});
		return Object.keys(groups).map((group) => {
			return groups[group];
		});
	};
	const sorted = groupBy(sortData, (item) => {
		return item.materialCode; // 返回需要分组的对象
	});
	return sorted;
};

export function sortClassMaterialcode(sortData) {
	const groupBy = (array, f) => {
		let groups = {};
		array.forEach((o) => {
			let group = JSON.stringify(f(o));
			groups[group] = groups[group] || [];
			groups[group].push(o);
		});
		return Object.keys(groups).map((group) => {
			return groups[group];
		});
	};
	const sorted = groupBy(sortData, (item) => {
		return item.materialcode; // 返回需要分组的对象
	});
	return sorted;
};

// 多维数组转一维数组
export function flatten(arr) {
	return [].concat(...arr.map(x => Array.isArray(x) ? flatten(x) : x))
}

export function messageFilter(array) {
	array.forEach(i => {
		i.messageContent = i.messageContent.replace(/_zh_CN/g,"");
		// i.messageContent = i.messageContent.replace(/非破坏_zh_CN/g,'')
		// i.messageContent = i.messageContent.replace(/破坏_zh_CN/g,'')
		// if(i.messageContent.indexOf("工序：打包绕包") != -1) {
		// 	i.messageContent = i.messageContent.replace('破坏',"");
		// }
		// if(i.messageContent.indexOf("工序：贴合") != -1) {
		// 	i.messageContent = i.messageContent.replace('破坏',"");
		// }
		// if(i.messageContent.indexOf("工序：PE膜") != -1) {
		// 	i.messageContent = i.messageContent.replace('破坏',"");
		// }
	});
	return array
}

//data:base64图片格式字符串
//filename：文件名称
export function base64toFile(data, fileName) {
	const dataArr = data.split(",");
	const byteString = atob(dataArr[1]);
	const options = {
		type: "image/jpeg",
		endings: "native"
	};
	const u8Arr = new Uint8Array(byteString.length);
	for (let i = 0; i < byteString.length; i++) {
		u8Arr[i] = byteString.charCodeAt(i);
	}
	return new File([u8Arr], fileName + ".jpg", options);//返回文件流
}
/**
 * 校验域名
 * @param {*} adress 
 * @returns 
 */
export function regExpDomainName(adress) {
	const reg = new RegExp(/http(s)?:\/\/([\w-]+\.)+[\w-]+(\/[\w- .\/?%&=]*)?/)
	return reg.test(adress)
}
// 版本更新方法
export function wgtUrlupload() {
	let _this = this;
	//系统版本升级判断接口（后台获取服务器）
	// var urlfun = 你自己后台服务器的接口方法  判断是否需要升级
	var urlfun = ''
	// #ifdef APP-PLUS
	/** 锁定屏幕方向 */
	plus.screen.lockOrientation('portrait-primary');
	console.log("onLaunch锁定屏幕方向")
	/** 检测升级 */
	// 取得版本号
	plus.runtime.getProperty(plus.runtime.appid, function (info) {
		// 版本号变量持久化存储
		getApp().globalData.editionnum = info.version; //版本号持久化存储做其它备用
		// console.log("当前应用版本：" + info.version + "---" + plus.runtime.version);
		// console.log("appid：" +plus.runtime.appid);
		// console.log("appid基座版本号：" +plus.runtime.version);
		uni.request({
			url: urlfun, 	//接口地址。url
			method: "POST",		//传输类型
			data: {
				"appid": plus.runtime.appid,
				"version": plus.runtime.version,
				"system": uni.getStorageSync('systemname'),
				"editionnum": info.version,
			},		//必要参数
			// header: data.header,	//https 请求头参数
			success: (res) => {
				console.log("AJAX数据请求接口--返回状态--" + JSON.stringify(res.data));
				var data = res.data;
				var status = data.status;
				// 判断返回结果,调用升级方法
				if (status == 200) {
					// 开始调用  data = 服务器返回的数据里面有 新的版本号，下载地址
					checkVersionToLoadUpdate(info.version, data);
				} else {
					uni.showToast({
						title: data.msg,
						duration: 1500
					});
				}
			}
		});
	})
	// #endif

}
/**
 * 进行版本型号的比对 以及下载更新请求
 * @param {Object} server_version 服务器最新 应用版本号
 * @param {Object} curr_version 当前应用版本号
 */
export function checkVersionToLoadUpdate(server_version, data) {
	if (server_version !== data.edition) {
		//TODO 此处判断是否为 WIFI连接状态
		if (plus.networkinfo.getCurrentType() != 3) {
			uni.showToast({
				title: '有新的版本发布，检测到您目前非Wifi连接，为节约您的流量，程序已停止自动更新，将在您连接WIFI之后重新检测更新',
				mask: true,
				duration: 5000,
				icon: "none"
			});
			return;
		} else {
			uni.showModal({
				title: "版本更新",
				content: '有新的版本发布，检测到您当前为Wifi连接，是否立即进行新版本下载？',
				confirmText: '立即更新',
				cancelText: '稍后进行',
				success: function (res) {
					if (res.confirm) {
						uni.showToast({
							icon: "none",
							mask: true,
							title: '有新的版本发布，检测到您目前为Wifi连接，程序已启动自动更新。新版本下载完成后将自动弹出安装程序',
							duration: 5000,
						});
						//设置 最新版本apk的下载链接
						var downloadApkUrl = data.uplodurl;
						var dtask = plus.downloader.createDownload(downloadApkUrl, {}, function (d, status) {
							// 下载完成  
							if (status == 200) {
								plus.runtime.install(plus.io.convertLocalFileSystemURL(d.filename), {}, {}, function (error) {
									uni.showToast({
										title: '安装失败',
										duration: 1500
									});
								})
							} else {
								uni.showToast({
									title: '更新失败',
									duration: 1500
								});
							}
						});
						dtask.start();
					} else if (res.cancel) {
						console.log('稍后更新');
					}
				}
			});
		}
	}
}


//保留4位小数
export function toFixed4(data1)
{  
  return  Number(Number(data1).toFixed(4)) 	

}
